

#ifndef	CDD_MCAL_H
#define	CDD_MCAL_H

/***********************************************************************************************************************
**                                                    Includes                                                        **
***********************************************************************************************************************/
#include "Std_Types.h"
#include "GpioDriver.h"
#include "AdcDriver.h"
#include "FlashDriver.h"
#include "UartDriver.h"
#include "IcuDriver.h"
#include "CanDriver.h"
#include "I2c.h" 
#include "Afe.h"

/***********************************************************************************************************************
**                                                  Global Symbols                                                    **
***********************************************************************************************************************/

/* 原始数据 */
#define PRIMITIVE_ADC_RESULT 0
/* 滤波数据 */
#define FILTER_ADC_RESULT 1
/* 定义使用原始的ADC采样结果还是滤波后的ADC采样结果 */
#define IF_ADC_RESULT FILTER_ADC_RESULT

/***********************************************************************************************************************
**                                                Global Data Types                                                   **
***********************************************************************************************************************/

/**
 * @brief 滤波信息
 */
typedef struct ADC_SAMPLE_FILTER_INFO
{
	uint8 index; /* 滤波缓冲区索引 */
	uint16 sampleBuff[ADC_SAMPLE_FILTER_BUFF_LENGTH]; /* ADC滤波缓冲区 */
}ADC_SAMPLE_FILTER_INFO; 

/**
 * @brief ADC采样控制信息
 */
typedef struct ADC_SAMPLE_FILTER_CTRL_INFO
{
	ADC_SAMPLE_FILTER_INFO filter[ADC_SAMPLE_TYPE_MAX]; /* 采样滤波 */ 
	uint8 filterInterval; /* 采样间隔 */
	uint16 adcFilterResult[ADC_SAMPLE_TYPE_MAX]; /* 采样结果（滤波后） */
}ADC_SAMPLE_FILTER_CTRL_INFO; 

/***********************************************************************************************************************
**                                                Global Data                                                         **
***********************************************************************************************************************/


/***********************************************************************************************************************
**                                            Global Function Task                                                    **
***********************************************************************************************************************/
/**
  * @brief  Mcal initial
  * @retval None
  */
void Cdd_McalInit(void);

/**
  * @brief  空闲任务
  * @retval None
  */
void Cdd_Task_Idle(void);

/**
  * @brief  5ms周期任务
  * @retval None
  */
void Cdd_Task_5ms(void);

/**
  * @brief  10ms周期任务
  * @retval None
  */
void Cdd_Task_10ms(void);

/**
  * @brief  50ms周期任务
  * @retval None
  */
void Cdd_Task_50ms(void);

/**
  * @brief  100ms周期任务
  * @retval None
  */
void Cdd_Task_100ms(void);

/***********************************************************************************************************************
**                                            Global Function Interface                                               **
***********************************************************************************************************************/
/**
  * @brief  获取ADC滤波后的结果
  * @param  type 类型，result 结果
  * @retval None
  */
void AdcDriver_GetAdcFilterResult(ADC_SAMPLE_TYPE type,uint16 *result);

#endif /*CDD_MCAL_H*/

/**********************************************************************************************************************
 *  END OF FILE: Cdd_Mcal.h
 *********************************************************************************************************************/
